Trouble shooting (TI C28x) 

Trouble : when SCI-A GPIO port recommended by easyDSP could not be usable 

To use RAM booting and flash programming with easyDSP, easyDSP should be connected to the designated SCI-A and GPIO port. 
In case only monitoring is used with easyDSP, easyDSP can be connected to any SCI and any GPIO port, but you have to modify the easyDSP source file accordingly.
To use RAM booting and flash programming with easyDSP, but with other GPIO port than designated, please refer to the help file 'How to use other SCI port than designated'.
It's about how to use designated SCI-A port during RAM booting or flash programming, and then use other SCI port than designated during monitoring.

Trouble : 'section not aligned' message in flashrom dialog

Shooting : easyDSP uses TI's flash API to access onchip flashrom. TI flash API of Gen.3 MCU (ex. F2807x, F28002x, F28004x, F2837x, F2738x) requires section alignment on the address (min. 64bit boundary or recommended 128bit boundary) depending on MCU. That is, the start address of the section should be either 0x*0, 0x*4, 0x*8 or 0x*C for C28x core and either 0x*0 or 0x*8 for Arm Cortex-M4 (ex, F2838x CM). In the picture above, the error is caused since the start address of the section is 0x*2.To avoid this problem, please align all sections linked to flash on a minimum 64-bit boundary in the linker command file for your code project. As shown below linker command file from TI, it is already applied as recommended value for default sections but you need to do it yourself for your own section.
If the program continues even after above measure, please check your map file (*.map) and identify which section makes error (the section starting from the address 0x080002 in the picture) and apply section specific measures.

<in case of TMS320F280049>


<in case of TMS320F28388 CPU1 and CPU2 >

<in case of TMS320F28388 CM>

Trouble : 'The address xxx is not flash area !' error message when entering to flash dialog



Cause : Flash programming is not feasible since the initialized section is located at RAM. Particularly in the case that initial value of user variable in CLA program is set.
Shooting : Please refer to below manual capture. In case the initial value is needed, write the variable with the value in the main() or other C28x code.

Trouble : Booting is successful but verifying is not from the address 0 due to MCU reading failure

Verifying is done by the easyDSP communication with MCU. So, any reason to block the communication could cause this problem.

cause-1 : The source files easyDSP provides for its communication is not included in the project
Shooting-1 : please include them in the project and modify main.c file accordingly. Please refer to the help file.

cause-2 : user program sets the GPIO easyDSP is using improperly.
Shooting-2 : please remove the GPIO seeting from your program.


cause-3 : enough time resource is not allocated to easyDSP communication
Shooting-3 : For example, if ePWM interrupt has high frequency, please reduce it.

Trouble : MCU is working improperly when using a large number of variables or big size array 

cause : bug of TI source file
Shooting : please use the latest TI source file (C2000Ware)

 Trouble : F2838x is not working with easyDSP

Shooting : In case your board has 20Mhz clock and your source file is based on C2000Ware_3_02_00_00 (or upward), please predefine USE_20MHZ_XTAL so that TI source files can be compiled based on 20MHz. Please check below excerpt from TI's C2000Ware_3_02_00_00 release note.

 

Trouble: Warning message as below before RAM booting is started


Shooting : change your cmd file so that your code is not overlapped with the reserved RAM memory for bootrom.
For example, 28377D has the reserved RAM memory for bootrom operation as shown in the table below
(Excerpt from Technical Reference Manual (Literature Number: SPRUHM8I, Revised September 2019)).

In case your code is overlapped with this area, easyDSP detects it and shows warning message.

Trouble: RAM booting failed with message box below

Shooting : RAM booting is failed since program memory is allocated to flash area, not ram area. The address shown in the box (ex, 0x33D0FE) belongs to flash. Please change your link file to allocate all the memory to ram area and try again.

Trouble: Auto bauding failed

Shooting :
Mainly due to wrong hardware connection between easyDSP and your MCU board.
Step 1 : please check if your connection is correct. Hope you find misconnection in this step. Or, move to step 2. 
Step 2 : please check the waveforms of easyDSP pins during booting. Also refer to the below sequence of easyDSP pin status.
            In case /RESET of easyDSP is NOT directly connected to reset pin of DSP, please check reset pin status of DSP pin together.

    Step 2-1 : please check if /BOOT is low when /RESET is changed from low to high.
                  In case power monitoring IC (TPSxxxx) is used to generate /XRS signal and /RESET is an input to the IC,
                   some cases it happens that /XRS becomes high after /BOOT is high, which will make booting failure.
 
    Step 2-2 : please
check 
RX and TX. After /BOOT pins are released high, 0x41 is sent from PC to MCU via RX. 
                   Bauding bps could be different by MCU type and booting speed option.
                   Then MCU send 0x41 at the detected bps (ex. 38400bps here). Please check the waveforms and see what is missing in your board.



 

Trouble : compilation failed with below error message

 undefined first referenced                                                       
  symbol       in file                                                            
 --------- ---------------- 
 LL$$OR    C:\\tidcs\\c28\\DSP2833x\\Project\\Debug\\easy2833x_sci_v7.3.obj
 ULL$$CMP  C:\\tidcs\\c28\\DSP2833x\\Project\\Debug\\easy2833x_sci_v7.3.obj

error: unresolved symbols remain
error: errors encountered during linking; "./Debug/inverter.out" not built

>> Compilation failure

Shooting : The TMS320C28x does not directly support some C/C++ integer operations. Evaluating these operations is done with calls to run-time-support routines. These routines are hard-coded in assembly language. They are members of the object and source run-time-support libraries.
"ULL$$CMP" = unsigned long long comparison
"LL$$OR" = long long oring
Therefore, please include run-time library at compiling.
 
Trouble : Type of all variables are displayed as 'int'

Shooting: Please use the latest easyDSP version and set the proper debugging model (either coff or dwarf) in the project setting.